﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AccesoData;
using Entidades;
using Logica.Interfaces;

namespace Logica.Comandos.Lugar
{
    public class ComandoObtenerDireccion:Comando, IConsultable 
    {
        #region Overrides of Comando

        public override void Ejecutar()
        {
            throw new NotImplementedException();
        }
        #endregion

        #region Implementation of IConsultableLista

        /// <summary>
        /// metodo que retorna una lista de los lugares que conforman la direccion del lugar
        /// </summary>
        /// <param name="busqueda"></param>
        /// <returns></returns>
        public List<Object> Ejecutar(Object busqueda)
        {
            throw new NotImplementedException();
        }

        #endregion

        #region Implementation of IConsultable

        public Aseguradora Ejecutar(Entidad aseguradora)
        {
            throw new NotImplementedException();
        }

        public Entidades.Cliente Ejecutar(Entidades.Cliente cliente)
        {
            throw new NotImplementedException();
        }

        public Inspeccion Ejecutar(Entidades.Siniestro siniestro)
        {
            throw new NotImplementedException();
        }
        
        public Personal Ejecutar(int idAjustador)
        {
            throw new NotImplementedException();
        }

        public Entidades.Poliza Ejecutar(Entidades.Poliza idPoliza)
        {
            throw new NotImplementedException();
        }

        public Entidades.Poliza Ejecutar(Entidad aseguradora, Entidades.Poliza poliza)
        {
            throw new NotImplementedException();
        }

        public Entidades.Ramo Ejecutar(string nombreRamo)
        {
            throw new NotImplementedException();
        }

        public Recaudo Ejecutar(Recaudo recaudo)
        {
            throw new NotImplementedException();
        }

        int IConsultable.Ejecutar()
        {
            throw new NotImplementedException();
        }

        #endregion

        public Entidades.Lugar Ejecutar(Entidades.Lugar lugar)
        {
            Entidades.Lugar piso = DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(lugar.Id);
            piso.Descendiente = null;
            if (piso.IdLugar != -1)
            {
                Entidades.Lugar casa =
                    DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(piso.IdLugar);
                casa.Descendiente = piso;
                if (casa.IdLugar != -1)
                {
                    Entidades.Lugar calle =
                        DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(casa.IdLugar);
                    calle.Descendiente = casa;
                    if (calle.IdLugar != -1)
                    {
                        Entidades.Lugar urbanizacion =
                            DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(calle.IdLugar);
                        urbanizacion.Descendiente = calle;
                        if (urbanizacion.IdLugar != -1)
                        {
                            Entidades.Lugar ciudad =
                              DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(
                                                                           urbanizacion.IdLugar);
                            ciudad.Descendiente = urbanizacion;
                            if (ciudad.IdLugar != -1)
                            {
                                Entidades.Lugar estado =
                                    DAO.ObtenerFabrica(1).ObtenerDaoLugar().ObtenerLugarId(
                                                                        ciudad.IdLugar);
                                estado.Descendiente = ciudad;
                                return estado;
                            }
                            return ciudad;
                        }
                        return urbanizacion;
                    }
                    return calle;
                }
                return casa;
            }
            return piso;
        }
    }
}


